#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>

typedef int QDatatype;

typedef struct QueueNode
{
	struct QueueNode* next;
	QDatatype data;
}QNode;

typedef struct Queue
{
	QNode* head;
	QNode* tail;
	int size;
}Queue;

//队列初始化
void QInit(Queue* pq);

//队列的销毁
void QDestroy(Queue* pq);

//获取队列的有效数据个数
int QSize(Queue* pq);

//判断队列是否为空
bool QEmpty(Queue* pq);

//入队
void QPush(Queue* pq, QDatatype x);

//出队
void QPop(Queue* pq);

//获取队尾数据
QDatatype QBack(Queue* pq);

//获取队首数据
QDatatype QFront(Queue* pq);
